package org.msz.system.service.impl;

import org.msz.system.dao.SysRoleMenuMapper;
import org.msz.system.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

@Service
public class SysRoleServiceImpl implements ISysRoleService {

    @Autowired
    private SysRoleMenuMapper roleMenuMapper;

    /**
     * 根据用户ID查询权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    @Override
    public Set<String> selectRolePermissionByUserId(String userId)
    {
        //TODO 使用keycloak获取用户的所有角色并写入到set集合中
        Set<String> permsSet = new HashSet<>();
        return permsSet;
    }

    @Override
    public List<Object> selectRoleAll()
    {
        return new ArrayList<>();
    }

    /**
     * 通过角色ID查询角色
     *
     * @param roleId 角色ID
     * @return 角色对象信息
     */
    @Override
    public Object selectRoleById(Long roleId)
    {
        return null;
    }

    @Override
    @Transactional
    public int insertRole(Object role)
    {
        return -1;
    }

    @Override
    @Transactional
    public int updateRole(Object role)
    {
       return -1;
    }


    /**
     * 通过角色ID删除角色
     *
     * @param roleId 角色ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteRoleById(String roleId)
    {
        //TODO 通过keycloak api 删除角色 并且在关联表解除所有联系
        return -1;
    }

    /**
     * 批量删除角色信息
     *
     * @param roleIds 需要删除的角色ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteRoleByIds(String[] roleIds)
    {
        //TODO 通过keycloak api 删除角色 并且在关联表解除所有联系
        return -1;
    }

    @Override
    public int deleteAuthUser(String userId, String roleId) {
        //TODO 通过keycloak api 解除用户与角色关系 并且在关联表解除所有联系
        return 0;
    }

    @Override
    public int deleteAuthUsers(String roleId, String[] userIds) {
        //TODO 通过keycloak api 解除用户与角色关系 并且在关联表解除所有联系
        return 0;
    }

    @Override
    public int insertAuthUsers(String roleId, String[] userIds) {
        //TODO 通过keycloak api 解除用户与角色关系 并且在关联表解除所有联系
        return 0;
    }
}
